TDM digital matrix intercom system

ABSTRACT

A time division multiplexing (&#34;TDM&#34;) digital matrix intercom system for connecting intercom stations. The system includes a digital switching system receiving audio input communications signals from at least some of the intercom stations, and sending audio input communications signals to at least some of the intercom stations. The digital switching system includes a TDM system for broadcasting on a TDM bus multiple digital communications signals including such digital audio input signals. The TDM system includes one or more interfaces connecting intercom stations with the TDM bus. The system also includes a signal mixer which is capable of receiving from the TDM bus selected ones of the digital audio input signals, and creating and broadcasting on the TDM bus a custom mixed digital audio output communications signal which is a loudness weighted mix of such selected digital audio input signals with at least one of such selected signals optionally being given a larger weight corresponding to a louder volume than others of the selected signals. A custom mixed digital audio output signal thus may be routed to a selected one of the intercom stations as an audio output communications signal. Preferably the system includes an integrated circuit for producing custom output mix signals.

FIELD OF THE INVENTION

The invention relates to intercom systems which permit a number ofindividuals to communicate with one another from remote locations. Inparticular, the invention relates to the use of a time divisionmultiplexing ("TDM") digital switching matrix system in an intercomsystem.

BACKGROUND OF THE INVENTION

Intercom systems are used in a variety of commercial contexts to providecommunication between two or more individuals located remote from oneanother. Although even simple intercom systems are capable of providingprivate point-to-point communication between just two individuals,state-of-the-art systems are designed to provide "conference-type"communication, connecting several intercom stations with one anothersimultaneously, so that several individuals can talk jointly with oneanother. Examples of commercial contexts utilizing such systems includetelevision production facilities, stadiums, theaters, and the like.

Conventionally, intercom systems used by such establishments employ amatrix of switches, called a crosspoint switch. A crosspoint switch isutilized when a system has many sources and many destinations, any ofwhich may need to communicate with a changing mix of any of the othersat various times during system operation. Even if one particularfacility can "hard-wire" its sources and destinations in a staticconfiguration, any system intended for use by facilities with differingneeds can benefit from the ease of configurability that a crosspointswitch provides. In short, a crosspoint switch is employed any time thedesired connectivity between a system's multiple sources anddestinations cannot be known in advance of the system's hardware design.

To make use of a crosspoint switch, the system architecture is set up asfollows: instead of connecting the various source equipment anddestination equipment directly in point-to-point fashion, each sourceand destination is connected only to the crosspoint; which makes crossconnections between the sources and destinations internally. A signalthus makes two hops in going from source to destination; it must alwaystravel via the crosspoint.

A crosspoint switch can be implemented as a matrix of SPST switchesbetween input and output lines, as shown in FIG. 1. Typically theswitches are tiny semiconductor switches which are digitally controlledvia software. The signal path through the switches may either be analogor serial digital. In FIG. 1 a 4×4 crosspoint switch matrix is shown.Any of the source signals, A through D, can be connected to any of thedestination paths, E through H. If, for example, it were desired toroute source signal C through to destination F and at the same timeroute source signal B through to destination H, one would close switches9 and 7, as shown in FIG. 1.

Input signals can also be sent out to multiple destinations in parallel,as shown in FIG. 2 (i.e., a "Y" connection). But one may not route morethan one signal onto a single destination path, as shown in FIG. 3. Thisattempt causes a direct short between the outputs of two driveramplifiers elsewhere in the system, and could actually result inelectrical damage either to the switches or to the external signalsource equipment. (The correct way to combine two or more signals wouldbe to route the source signals to separate outputs, and then sumthem--external to the crosspoint--with a mixer unit).

The disadvantage of the matrix-of-switches approach to implementing acrosspoint is that the cost of the matrix grows in geometric proportionto the number of inputs and outputs to be connected. That is, though a4×4 matrix only requires 16 switches, a 100×100 matrix requires 10,000switches, and a 500×500 matrix would require 250,000 switches. Thus,beyond a certain system size, a hierarchical matrix of matrices must beconstructed in order to achieve complete cross-connectivity. Inaddition, implementing analog "Y" connections to multiple destinationsin parallel will result in signal degradation due to impedancemismatches if too many destinations are driven. To prevent this, inputand output drivers must be included, further adding to the crosspoint'scost while degrading its signal-to-noise ratio. Thus, in practice, thematrix-of-switches crosspoint is practical only for small to medium sizesystems.

SUMMARY OF THE INVENTION

The invention provides an intercom system that utilizes time divisionmultiplexing ("TDM") technology to provide interconnection of intercomstations, including the ability to provide custom mixed intercom signalsto specific intercom stations within the system. That is, an individualstation may be provided with a composite communications signal whichincludes signals from several other specific sources within the system,and the volume level of each of these sources may be individuallycontrolled to provide a signal that is custom mixed for the listener.Other listeners may be provided with different custom mixes (even of thesame source signals), each being particularly suited to the needs anddesires of the listener. The utilization of TDM technology in mixingsignals and setting custom volume levels for system listeners, inaccordance with the system of the invention, permits relatively largeintercom systems to be constructed (and expanded) without a geometricgrowth in the size of the crosspoint switch. It allows distribution ofthe system's switching capability among various modules of the system,and also permits dynamic sharing of the mixing capability among thevarious modules so that, for example, if one module is being requestedto perform mixing functions beyond its size, it can, in effect, borrowmixing capability from other modules in the system.

An intercom system of the invention typically includes a plurality ofintercom stations, at least some of which include an audio input(typically equipped with a microphone) generating an audio inputcommunications signal, and at least some of which include an audiooutput (typically equipped with a speaker or headset) generated from anaudio output communications signal. Each of the stations is connected toa TDM-based digital switching system, which receives audio inputcommunications signals from at least some of the stations and sendsaudio output communications signals to at least some of the stations.Analog-to-digital converters are provided for creating digital audioinput signals derived from the audio input communications signalsreceived by the intercom stations. The digital switching system utilizesa time division multiplexing ("TDM") system for broadcasting on a TDMbus multiple digital communications signals including the digital audioinput signals. The TDM includes interfaces for connecting the individualintercom stations with the TDM bus, permitting them to send signals tothe bus and receive signals from the bus.

A signal mixer is provided for creating the individual custom signals tobe sent to the intercom listening stations. For each custom signal to bemixed, the mixer obtains the desired component input signals from theTDM bus, and adjusts the loudness of each such component signalaccording to the signal mix requested. If the custom signal mix isrequested only by a "client" (i.e., an intercom keypanel) served by theboard on which the mixer is located, the custom mixed digital audiooutput communications signal may be sent directly to that client. If,however, the signal mix is requested by any other client, the custommixed output signal is broadcast on the TDM bus for receipt by therequesting client. This signal, thus, is a loudness weighted mix of theselected digital audio input signals with typically at least one of theselected input signals being given a larger weight corresponding to alouder volume than others of the selected signals; moreover, the mixeralso provides custom mixed signals for other listeners in the system,with at least some of the custom mixed output signals being comprised ofa weighted loudness mix of digital audio input signals that is differentthan the weighted mix of other custom mixed digital audio output signals(i.e., the volume of a given signal may be louder for one listener thanfor another listener). Custom volume mixed digital audio output signalsbroadcast on the TDM bus may then be received at any one (or more) ofthe intercom stations as an audio output communications signal andconvened by the audio output transducer to audio output.

The system may be utilized with analog intercom stations, the centralunit containing an analog-to-digital converter; alternately, theindividual intercom stations may be provided with A/D and D/Aconverters.

The system includes a microprocessor based control system capable ofreceiving and acting on requests from the individual intercomstations--i.e., a listener at an intercom station can request whichsignals he or she wants to listen to, and the control system monitorsand carries out those requests, directing the mixer to select theappropriate signals and to properly set the relative volume levels ofeach selected signal. The volume level for a particular signal may beselected by the listener at a keypanel, or, if desired, may bepre-programmed into the control system.

In a preferred embodiment, the system mixer comprises a plurality ofessentially identical CMOS application specific integrated circuits(ASIC), each having the capability of producing a plurality of sub-mixesfrom a plurality "m" of input signals; the number of digital inputsignals in each sub-mix created by a particular ASIC is dynamicallycontrollable within the range of 0 to m-x where "x" is the number ofsignal inputs simultaneously allocated to the other sub-mixes. Thus, ifa particular ASIC is requested to perform mixing beyond its capacity,portions of the requested mixes can be mixed by other ASIC's on the TDMsystem, permitting great flexibility in utilization of the mixingcapacity of the total system.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a schematic drawing of a prior art crosspoint switch matrixconnecting two input lines to two output lines;

FIG. 2 is a schematic drawing of a prior art crosspoint switch matrixconnecting one input line to three output line;

FIG. 3 is a schematic drawing of a prior art crosspoint switch matrixattempting to connect three input lines to one output line (and causingan electrical short);

FIG. 4 is a block diagram of a TDM switching system;

FIG. 5 is a block diagram similar to FIG. 4 illustrating system softwarecontrol of the TDM switching system;

FIG. 6 is a block diagram similar to FIG. 4 illustrating the numberingof inbound and outbound channels;

FIG. 7 illustrates the routing of a signal from a "Client A" (outboundChannel 13) out onto the TDM Link (on Time Slot 2) and from there to a"Client C" (Inbound Channel 3);

FIG. 8 illustrates the routing of a single outbound signal to bereceived on three distinct inbound channels (two of which are associatedwith the same "Client");

FIG. 9 illustrates the mixing of two output signals (OUT 0 and OUT 1) byan accumulating processor to create a signal received as an input equalto the sum of the two outputs;

FIG. 10 is a schematic representation of an intercom system of theinvention;

FIG. 11 is a block diagram illustrating conceptually the custom mixingof intercom signals for each of four intercom keypanels in an intercomsystem of the invention;

FIG. 12 is a block diagram of an alternate hardware configuration forthe custom mixing of intercom signals for individual keypanels;

FIG. 13 illustrates a TDM interface counter usable in conjunction withthe system of the invention;

FIG. 14 illustrates a TDM interface double buffer usable in conjunctionwith the system of the invention;

FIG. 15 is a block diagram depicting the paths of audio signals in apreferred system of the invention which utilizes some intercom keypanelswhich are analog and some intercom keypanels which include D/A and A/Dconverters;

FIG. 16 is a block diagram depicting the paths of control signals in apreferred system of the invention which utilizes some intercom keypanelswhich are analog and some intercom keypanels which include D/A and A/Dconverters;

FIG. 17 is a block diagram illustrating connections of the ports of apreferred TDM ASIC utilized in a system of the invention;

FIG. 18 illustrates the outbound audio path for an audio signal beingsent from a client card to the TDM Bus;

FIG. 19 illustrates the inbound audio path for an audio signal beingretrieved from the TDM Bus by a client card;

FIG. 20 depicts conceptually the internal function of a TDM ASIC usablein a system of the invention.

FIGS. 21-23 depict detailed block diagrams of the operation of TDM ASICusable in a system of the invention, FIG. 21 depicting the ASIC'sControl Port, FIG. 22 depicting the TDM Bus Pipeline which routessignals within the ASIC, and FIG. 23 depicts the operation of the mixerin the ASIC.

DETAILED DESCRIPTION OF THE INVENTION

Time division multiplexing ("TDM") is a well-known technique forallowing a single physical conductive path to carry many channels ofinformation, such as in telecommunications. The many channels ofinformation carried on a TDM link can all "fit" because they all taketurns using it in round-robin fashion. When the last channel has takenits ram, the first channel takes another, and so on, in a regularlyrepeating way.

Many commonly employed digital signals, such as digital audio, arealready in a form compatible with TDM transmission. Such signals consistof a sequence of measurements, or "samples", evenly spaced in time. ATDM scheme simply interleaves the samples of several digital signals.This can be done if all the signals to be utilized have the same amountof time between samples, i.e., they all have the same sample rate.

On a TDM link, time is divided into two hierarchical units: the Frameand the Time Slot, each Frame being composed of multiple Time Slots. ATime Slot is the amount of time allotted each channel in its turn, andthe Frame is the amount of time it takes for all the channels to haveone turn (plus any "overhead" for synchronization or other purposes).

The Frame Rate is the inverse of the Frame time; it is the rate at whichthe Frames repeat. Since each channel gets one turn per Frame, the FrameRate also represents the frequency of "turns" from the perspective ofeach individual channel, i.e., it must be equal to the basic sample rateof all the channels. The Word Rate is the inverse of the Time Slot'sduration; it represents the frequency at which data must change on theTDM link to accommodate the number of channels desired (assuming thedata is transmitted in parallel fashion). If the data on the TDM link isto be transmitted serially, then each Time Slot will be furthersubdivided into Bit Times. The inverse of the Bit Time is the Bit Rate.

For example, in teleccommunications a given trunk may carry, e.g., 24phone calls across long distances. Before being sent across the trunk,each phone call's signal is digitized into 8-bit words at the rate of 8kHz. Thus, each signal's turn on the fine must recur at the rate of 8kHz; this becomes the Frame Rate of the trunk. Since there are 24channels to send in each Frame, the total number of data bits per Frameis 192. A 193rd overhead bit is added for frame synchronization. The BitRate is thus 8 kHz Frames×193 Bits/Frame=1.544 MHz Bits. The Bit Time isthen 648 nsec, and a Time Slot's duration is 648 nsec/Bit×8Bits/Word=5.18 μsec.

The previous example describes a point-to-point TDM link, where thetechnique is used to transmit many channels over long distance usingjust a single conducting path (i.e., a single trunk). A TDM may also beused to simplify the hardware required to implement a crosspoint switchfor digitized signals. A TDM architecture can significantly reduce thecost of larger crosspoint matrices, for reasons described below. Inaddition, the TDM matrix is "transparent" to the signals being switchedthrough it, in terms of noise and distortion, no matter how manyparallel destinations are driven: In a digital system, noise anddistortion parameters are affected only by the analog-to-digital anddigital-to-analog conversion equipment and not at all by processesoccurring strictly in the digital domain, such as a TDM crosspoint.

Rather than simply connecting a TDM in point-to-point fashion asdescribed in the example above, a TDM matrix may be implemented byallowing multiple ports to be connected to the TDM, as shown in FIG. 4.Each port is the interface through which a "Client" gains access to thesignals being conducted by the TDM link, and to the destination signalpaths provided by the TDM.

These TDM ports are the physical interface between Client and TDM, likethe individual switches between source and destination in the aboveanalog crosspoint description. But like those switches, which may beopen or closed, the port's actual electrical connections to the TDM arecontrolled by the System Software, (see FIG. 5) which itself operates inservice of the user. Nevertheless, a Client's TDM port represents apotential connection with each and every possible remote source ordestination located elsewhere in the system.

From the point of view of each Client, any TDM Time Slots which remainun-driven by other Clients represent available destination paths for itsoutbound signals. Through its TDM interface, each Client has thecapability to drive one or more of the available TDM Time Slots, or topull in the signals present in one or more of the Time Slots and usethese inbound signals in some fashion. Or it may do both. Digital signalprocessors ("DSP'S") such as an equalizer or dynamic range compressor,for example, would take an input signal from one Time Slot, process it,and then drive it out onto another Time Slot.

TDM Clients may thus be broadly categorized as being TDM sources,destinations, or throughput processors.

A TDM Source Client will either have a signal coming into it from theoutside world which it will then make available to the rest of thesystem by driving it out onto the TDM (perhaps also pre-processing it insome fashion along the way), or it may simply drive the TDM with signalsit has generated internally "from scratch", directly in the digitaldomain.

A TDM Destination Client will almost always take the signals it getsfrom the TDM and relay them to the outside world (unless it is merely adisplay device), although it too may process them along the way.

A TDM Throughput Processor always generates its TDM signals using otherTDM signals as its raw materials.

A TDM Client may also be categorized according to the number of channelsit accommodates. As used in this context, the word "channel" means asignal path on the Client side of a TDM Interface (a signal path on theTDM side will be referred to only as a Time Slot). Every TDM Client hasaccess to the same number of Time Slots (all of them), but they mayprocess or relay differing numbers of Channels. Time Slots are absolute,Channels are relative. That is, there are only so many TDM Time Slots inthe whole system, they exist in only one place in the system, and theyare all uniquely identifiable, one from all the others. They all have aunique number used to refer to them--their Time Slot Number. Thenumbering starts from zero for the first Time Slot in a Frame, andcontinues up to some MaxCount for the last Time Slot in the Frame. Theyhave no direction associated with them, they are all "broadcast" on theTDM Bus.

Channels, on the other hand, are relative in the sense that every Clienthas some of them, and each Client numbers them from zero up to someMaxChan (see FIG. 6). They also have a direction from the Client'sperspective relative to the TDM; they are either Outbound or Inbound. Sothere are as many Inbound Channel Zeroes in the system as there areClients, whereas there is only one Time Slot 0. All the Inbound ChannelZeroes might carry a unique signal, but they are all named InboundChannel 0 on their respective Clients.

Furthermore, Client A's Outbound Channel 13 might go across the TDM andbecome Client C's Inbound Channel 3. It is the same signal, but it isnamed differently over at Client C than it is on Client A. So ClientChannels are local and their numbers are relative only to the otherchannels accommodated by their Client, whereas TDM Time Slots are globaland absolute.

Clients are not in communication directly with each other; i.e., Clientscommunicate with the rest of the world only through their TDM Interface,and all their TDM Interfaces are under the direct control of the SystemSoftware. The Client does not set up its own TDM Interface, so itdoesn't know where its outbound signals ultimately go, nor does it knowfrom whence its inbound signals originated.

This type of data--the data of system interconnectivity--is maintainedon the next higher level of hierarchy: the system software. The systemsoftware orchestrates the overall functionality of the system; theClients are the building blocks used by the system software to constructthe overall functionality. Each Client serves as a modular element in asystem comprised of many such elements.

The system software makes a crosspoint connection through the TDM matrixby programming both ends. A "talker" is assigned to a particular timeslot at one end, and a "listener" is assigned to the same time slot atthe other end. For example, if one desired to connect Client A'sOutbound Channel 13 to Client C's Inbound Channel 3, the system softwarewould first look through its Table of Available Time Slots, which itmaintains as connections are made and broken during run-time operation.If, for example, it finds that Time Slot 2 is available, the systemsoftware then tells Client A's TDM Interface to make a connection fromOutbound Channel 13 to TDM Time Slot 2. Next, it tells Client C's TDMInterface to make a connection from Time Slot 2 to Inbound Channel 3.From this point on, any signal leaving via Client A's Outbound Channel13 will arrive at Client C's Inbound Channel 3, after having traveledvia TDM Time Slot 2 (see FIG. 7).

It should be noted that Y-Connections (one to many) can still be made,using just a single Time Slot, by programming one talker and multiplelisteners. FIG. 8 shows Client A's output signal being received by aninbound channel of Client B and by two inbound channels of Client C. Itis not legal, however, to route multiple "talkers" onto the same TimeSlot (many to one). A proper way to do this would be to includesomewhere in the system a Throughput Processor Client running anaccumulating mixer, as shown in FIG. 9. The signals to be combined ("Out0" from Client A and "Out 1" from Client C) are routed over the TDM tothe mixer Client, which will pull them off the TDM and mix them togetherto compute a sum signal. The sum signal is then put back out on the TDM(on a different Time Slot) where it makes its way to destination ClientB where it is received as an input signal ("In").

Thus, a TDM-based crosspoint architecture really has no centralizedmatrix hardware. The switching matrix is distributed; there is a part ofit on every Client (in the form of the Client's TDM interface port).Whereas an analog crosspoint matrix must grow geometrically larger inresponse to increases in system capacity, a TDM architecture does not. ATDM link has a single conducting path or bus, and only the frequency ofdata transfer across the TDM must increase along with system capacity.From a hardware standpoint, extra TDM Time Slots are "free" until thebus frequency reaches a limit beyond which a technology change isrequired (for example from relatively inexpensive CMOS to more expensiveECL beyond 50 MHz or so). Thus, a system can be designed with arelatively large number of TDM Time Slots, but the user does not have topurchase "client" hardware for all the Time Slots--rather, the user canconfigure a system according to their present needs, and later expandthe system by merely buying more client hardware as needed.

FIG. 10 shows schematically an entire intercom system of the invention,with keypanel stations 10 geographically distributed throughout an areathe size of a building, for example. Each keypanel station in thisillustration has a microphone 11 and a speaker 12, and so is both asource and destination of audio communication signals (though the systemcould be utilized with some stations having only a microphone, or only aspeaker). In addition, Talk and Listen keypresses at the keypanels maybe utilized, and Incoming Call messages may be sent from the centralswitching matrix 14 to the keypanels; thus, bi-directional controlsignals may be connected between each keypanel and the matrix.

In this drawing, some of the keypanels are illustrated as transmittingand receiving analog audio signals to and from the switching matrix,while other keypanels transmit and receive in digital format. Either orboth types of keypanels may be used in any combination; from anarchitectural standpoint, the only difference is which end of the cablethe A/D and D/A converters are located. In either case, the digitalswitching matrix itself transmits and receives digital signals to andfrom every keypanel interface.

Other types of devices may also be connected to the matrix, such ascamera delegate panels and telephone interfaces, etc. However, thesetypically will all use the same physical, electrical, and controlprotocol standards as the keypanels, so keypanels will be used toillustrate the structure and operation of the system of the invention.

Each keypanel station may have multiple Listen keys, any number of whichmay be depressed at any time. When more than one Listen key is depressedsimultaneously, the keypanel station receives a mix of all the channelsit has requested to monitor. In many installations, each keypaneltypically will request a different mix of signals relative to therequested mixes of any of the other keypanels, so there is need for asmany mixers in the system as there are keypanel destinations (or atleast a mixer capable of serving all of the keypanel stations).Moreover, the invention provides the capability of allowing eachkeypanel to specify an audio level for each channel added to its mix.Thus, each keypanel is able to receive a weighted mix of all itsrequested Listen signals.

FIG. 11 illustrates a relatively simple embodiment of the invention.This illustration shows a very modest 4×4 matrix-smaller than what wouldordinarily be desired for a system utilizing the invention, but it willserve to more simply illustrate certain concepts. The system includes asingle four-channel Keypanel TDM Interface card 20 and four TDM mixingcards 21. There is one mixing card 21 for each keypanel in the system.The job of each mixing card is to compute the custom mix requested byits assigned keypanel. Two types of TDM Keypanel Interface cards couldbe utilized--one that interfaces to an analog keypanel and one thatinterfaces to the a digital keypanel.

FIG. 11 shows that each Client has a four channel TDM Interface. Thismeans that of the total number of TDM Time Slots out on the TDM Bus,each Client may only access a subset of four inbound channels maximumand four outbound channels maximum. The minimum size that the TDM Busitself would have to be in order to accommodate this setup would beeight Time Slots. This number includes four Time Slots to handle thefour microphone signals coming in from the keypanels and four more TimeSlots to handle the four custom mixes going back out to the keypanels.

The mixing cards operate by obtaining the four microphone input channelsfrom the TDM and multiplying each one by an attenuation factor (i.e., avolume level, which may either be pre-set by the System Software via acontrol bus, or may be set in response to a volume level requestreceived from the listener keypanel and communicated to the mixing cardsthrough the control bus). Then the post-attenuated signals are all addedtogether in an accumulator. For purposes of illustration, FIG. 11 showsfour parallel multipliers.

Alternately, however, the hardware configuration shown in FIG. 12 may beutilized. In this configuration, a single multiply/accumulate circuit isutilized to accomplish all the requested mixing. The first mic channelis obtained from the TDM interface, multiplied by its volume level andput into an accumulator. Then the second channel is obtained from theTDM, multiplied by its volume level and put into the accumulator. Thisprocess continues until the accumulator contains the weighted mix of allthe input signals, i.e., it contains the next sample of the first outputmix signal. This resulting sample is put into temporary local storage(i.e., a buffer) and the accumulator is cleared. Then the process isrepeated for the second mix, one channel at a time, and, in sequence,for the third and fourth mixes. At the beginning of the next Frame, theresults are moved to the TDM Interface for transmission, the accumulatoris cleared, and the process starts over. Thus, each sample of the outputsignal is a point-by-point weighted combination of the four inputsignals.

Since the multiplying function in this configuration takes placesequentially in pipeline fashion, only one hardware multiplier isnecessary. This is a more compact hardware solution, containing only onemixing card 25 for all four keypanel mixes. The pipeline mix sequencestarting at the beginning of a TDM Frame thus is as follows:

Transfer the four mixes (calculated in the previous frame) to the TDMInterface.

Clear the accumulator, set the Mux Select lines to zero.

Get Ch. 0 from the TDM, multiply it by mux output (Mix 0, Ch. 0 Volume),put result in accumulator.

Increment the mux select lines (to 1).

Get Ch. 1 from the TDM, multiply it by mux output (Mix 0, Ch. 1 Volume),put result in accumulator.

Increment the mux select lines (to 2).

Get Ch. 2 from the TDM, multiply it by mux output (Mix 0, Ch. 2 Volume),put result in accumulator.

Increment the mux select lines (to 3).

Get Ch. 3 from the TDM, multiply it by mux output (Mix 0, Ch. 3 Volume),put result in accumulator.

Increment the mux select lines (to 4).

Transfer accumulator to Mix 0 storage.

Clear the accumulator.

Get Ch. 4 from the TDM, multiply it by mux output (Mix 1, Ch. 0 Volume),put result in accumulator.

Increment the mux select lines (to 5).

Get Ch. 5 from the TDM, multiply it by mux output (Mix 1, Ch. 1 Volume),put result in accumulator.

Increment the mux select lines (to 6).

Get Ch. 6 from the TDM, multiply it by mux output (Mix 1, Ch. 2 Volume),put result in accumulator.

Increment the mux select lines (to 7).

Get Ch. 7 from the TDM, multiply it by mux output (Mix 1, Ch. 3 Volume),put result in accumulator.

Increment the mux select lines (to 8).

Transfer accumulator to Mix 1 storage.

Clear the accumulator.

This process is repeated until the end of the frame when all four mixeswill have been calculated and will be in storage. Then, at the beginningof the next frame, these mixes will finally be transferred to the TDMInterface for transmission to the TDM bus (and, hence, the rest of thesystem).

Although the above example is a more compact system in terms of thenumber of TDM Clients, this 16-channel multiply/accumulator (MAC) mustrun four times faster than the previous four channel version.Nevertheless, this system eliminates a certain amount of hardware (i.e.,three PCB's, three TDM Interface circuits, three Control Bus Interfacecircuits, etc.). By centralizing similar functions within single systemelements while segregating dissimilar functions to other systemelements, a modular system can be configured, usually resulting in loweraverage system cost for large systems, because builders of these systemscan expand in only the required directions without being forced tosimultaneously expand in others.

Much larger systems can thus be built using the invention describedabove. For example, low-cost CMOS technology currently operateseffectively up to about 50 MHz. If the system sample rate is 44.1 kHz (astandard sample rate for much commercially available digital audio,including audio CD's) and the TDM Bus word clock is near 50 MHz, itbecomes possible to handle, e.g., 1,024 Time Slots. With this many TimeSlots, the theoretical maximum matrix size that can be handled by oneTDM backplane is 1,024×1,024. Even a 512×512 maximum matrix size,however, would service a large intercom system. Desirably the TDMcapacity should be kept above the maximum matrix size to allow for twoor more processing hops per channel on some portion of the total numberof channels.

Commercially available DSP chips currently are able to execute 20million instructions per second. At a 44.1 kHz system sample rate, thisnumber represents over 400 instructions per sample period. This numberof instructions is divided among the number of channels to be processed.A multiply-accumulate (for mixing purposes) is accomplished in just oneinstruction, so a single DSP chip could theoretically mix 400 channels.As a practical matter, obtaining the samples from the Client side of theTDM Interface may limit the speed of such a system, but, e.g., one couldcompute four independent mixes of 32 channels each, for example. A2nd-order state-variable filter (for equalization purposes) might take10 instructions per channel. Thus, taking these factors intoconsideration, a single DSP could process 32 channels with relativeease. Custom hard-wired pipelines could realize even higher throughputs,even though they are somewhat more expensive.

Systems utilizing the invention thus could be customized using a widevariety of hardware and software configurations, depending on which ofany number of factors are relatively more or less important, includingdesired cost, speed, capacity, and function. In many professionalintercom system applications, however, desirable characteristics wouldinclude the ability to accommodate as many keypanels as possible, thecapability to do a lot of mixing, and providing the flexibility forthroughput processing such as equalization, dynamic range compression,echo cancellation for telephone interfaces, and the like. Desirably sucha system is modular, with the system being highly partitioned so thatindividual system elements are specialists in one area of functionality,but then have maximal channel capacity in that area.

Although the system of the invention may be implemented in a widevariety of hardware and software configurations, the followingdiscussion explores certain considerations for possible preferredembodiments of the invention.

The TDM Bus may itself be just a passive backplane. It must merely bedesigned so that signals can get across it in the amount of time theyhave to do so, and that they arrive in recognizable form. At a wordclock rate of 50 MHz, for example, each signal has about 20 nsec to getacross the bus and be latched in at the other side. This window may beshortened by propagation delays on both ends, so the maximum allowedtravel time could be in the range of, e.g., 5 to 10 nanoseconds. Sincethe speed of light is about 8 in. per nanosecond, in 5 nanoseconds thesignal can travel about 40 inches, which could be considered an upperlimit on the maximum bus length. The bus should be properly terminatedto minimize reflections, thus preserving the leading edge speed of thebackplane signals.

One significant factor in determining the maximum TDM word clock rateand hence the maximum number of system Time Slots is the TDM Interfacecircuit itself. The number of TDM Time Slots may be pre-determined(i.e., by the system sample rate), or, in a preferred embodiment, it maybe set up as a system parameter that can be determined after thehardware has been designed and built. In the latter case, each TDMInterface circuit is provided with a counter which is incremented by theWord Clock coming directly off the TDM bus. This counter is called theTime Slot Counter, and it tells the interface the number of the TimeSlot that is currently active out on the bus. To make a connection onthe TDM bus, the system software tells a source TDM Interface to "talk"on a certain Time Slot, and it tells a destination TDM Interface to"listen" on that same Time Slot. This scheme requires that each TDMInterface be in agreement with all the others as to which Time Slot isactive on the TDM bus at any given time.

To insure that this is the case, a second line may be sent across theTDM Bus named "TDM Start" (see FIG. 13). This signal is active in justone Word Clock period per sample period, and is used to define thebeginning of each TDM Frame. All of the TDM Interfaces can be obligatedto use this signal to synchronously reset their respective Time SlotCounters. In this way, each TDM Interface's counter is reset at the sameinstant, and they all track each other from that point on. Only one ofthe TDM Interfaces in the system is required to be the driver of thissignal, but all of the interfaces receive it.

Every TDM Frame may include some overhead time at its end forsynchronization purposes. Upon receipt of TDM Start, every TDM Interfaceresets its Time Slot Counter. Then these counters are all incremented inparallel by each ensuing Word Clock. They will come to the end of theircounts well before the end of the Frame; each interface also includes aregister called MaxCount, which is programmable via the System Software.The number stored in MaxCount dictates to the TDM Interface which TimeSlot is to be the last valid one in the Frame.

Each time the Time Slot Counter increments, the TDM Interface checks tosee whether MaxCount has been reached. To do this, it simply comparesthe number given by the Time Slot Counter with the number contained inthe MaxCount register. If they are equal, then the current Time Slot isthe last in the Frame. At this point the counter sets the Dead Zone flagto remind itself (in the remaining Word Clock periods still to elapsebefore the end of the current Frame) that it has already processed thelast valid TDM Time Slot.

During the Dead Zone time, the TDM Interface no longer allows the TimeSlot Counter to increment, so the current Time Slot Number continues tomatch the number in MaxCount and the Dead Zone flag continues to be set.The interface is completely locked up until the arrival of the next TDMStart pulse which resets the Time Slot Counter and clears the Dead Zoneflag.

The inclusion of the programmable MaxCount register is what eliminatesthe requirement of determining the maximum number of TDM Time Slots perFrame. Basically, a "target" number of Time Slots can be selected anddesigned for. Simulations will allow one to determine whether the numberis reasonable. The MaxCount register will power up with the targetnumber as its default. If the prototype hardware is functionally OK butunable to keep up with the target speed, MaxCount may simply be setlower. At this point Word Clock may be slowed down so that a lessernumber of Time Slots occupies the same Frame Time.

The TDM Bus thus may be designed such that its Word Clock Rate is"programmable", and, therefore, asynchronous relative to the systemsample rate. This allows it to accommodate whatever maximum capabilitythe TDM Interface happens to have. In other words, the Word Clock ratemay be set optimally for the interface, after the interface hardware hasbeen designed. Actual interface hardware may then be tested for itsmaximum capacity, and the bus may be set accordingly. This same freedommay be exploited when choosing the maximum channel capacity of TDMClient cards. The TDM Bus, should, of course, have a rate that is atleast as fast as the system sample rate, and preferably a little faster.

In a preferred embodiment, the TDM bus is designed to be 24 bits wide. Afull 24-bit word will be broadcast across the bus in every word clock.At a word clock rate of 50 MHz, the total bus bandwidth thus is 1.2Gigabits/sec. Although other bus widths may be used, a 24 bit width isdesirable for the following reasons. Audio signals from intercomstations preferably will be converted by analog-to-digital converters inthe keypanels to a width of 16 bits. Mixes of 256 channels of 16-bitaudio can be passed without rounding or truncation. Also, 24 bits is thenatural word width of many popular audio DSP chips.

The Client card preferably should be designed to accommodate anarbitrarily high number of channels, but at some point the TDM Interfacewill not be able to run fast enough to deliver channels to the Clientcard in a timely manner. The TDM Interface's channel capacity may alsobe constrained in that it must internally store the Time Slots it pullsoff the TDM before delivering them to the Client as Channels. The reasonfor this is that the signals a Client uses will generally be numbered asChannels by the Client in a different order than they are transmittedacross the TDM bus as Time Slots. Re-ordering can not be done withouttemporary storage.

Of the two constraints on the TDM Interface's Client-side channelcapacity--speed and memory--memory is most likely the constraint thatwill be hit first, at least in the preferred embodiment being currentlydiscussed. Preferably the TDM Interface uses a page-flipped doublebuffer scheme in each of the two directions--inbound andoutbound--between the Client and the TDM bus. In each direction thereare two pages of channel buffers. See FIG. 14. The Client gets a pagefor each direction, and the TDM gets a page for each direction. Thisarrangement lasts for one TDM frame, and then the two sides trade pages(i.e., the pages "flip"). The page that the Client writes to in one TDMframe will be dumped out onto the bus in the next TDM frame. The signalsthat are transferred across the bus in one TDM frame will be being readby a destination Client in the next TDM frame. Thus, it takes two TDMframe times for a signal to be sent across the TDM, and consequentlythere are four pages of channel storage in all. Each word of storage is24 bits wide to match the TDM bus, and with four locations per channel,96 bits are required for every channel of capacity specified. A64-channel TDM Interface thus requires 6,144 bits of storage. Inaddition, the TDM side of the preferred TDM Interface uses mappingtables to make the connections between Client-side Channels and TDM-sideTime Slots. A separate table is required for the inbound and outbounddirections. At least two table formats are possible:

(1) The first format requires a word of storage for each Time Slot. TheTime Slot Counter is used to address the table, and if the current TimeSlot is one in which a TDM transfer is to be made by this TDM Interface,there will be a valid channel number in the table.

If there is a valid channel number in the current Outbound Map, itinstructs the TDM Interface to read the sample at this channel numberfrom the Outbound Channel Buffer and send it out to bus in this TimeSlot. If there is a valid channel number in the current Inbound Map, itinstructs the TDM Interface to pull in the current Time Slot from offthe bus and write it into the Inbound Channel buffer at that location.An interesting case is when there is a valid channel number in both theInbound AND Outbound Maps. This is how a TDM loop-in is accomplished,which is necessary to sequentially chain a signal through two processesoccurring on the same Client.

If a Time Slot is not one in which a TDM transfer is to be made, thenthere will not be a valid channel number in either map. This means thatone of the channel numbers will have to be sacrificed (typically thehighest numbered one) so that it may be recognized as the "NoConnection" code. Alternatively another bit of storage could be assignedin each direction as a "Valid Channel" flag.

The width of each word is the number of bits required to express thenumber of channels. For example, a 64-channel interface would have atable word width of 6 bits (Channel 64 cannot be used, however). A63-channel interface then requires 1024 words×6-bit words×2directions=12,288 bits of table storage. A true 64-channel interfacerequires 1,024 words×7-bit words×2 directions=14,336 bits.

(2) A second possible map format requires a word of storage for eachChannel but has a wider word and requires sorting and an external "hit"detect circuit. This type of map must be sorted in order of ascendingTime Slot. Each word of storage stores the Time Slot AND the Channelnumber together. At the beginning of a frame, a Next Up counter is setto zero. It points to the first table entry. The Time Slot number storedin that location is compared to the current Time Slot until there is a"hit". At this point the Channel number indicated in the second part ofthe Map word is accessed in the Channel Buffer and connected to the TDM.Then the Next Up counter is incremented, pointing to the next tableentry which will be waiting for a higher numbered Time Slot. The End OfTable is indicated by the first entry whose Time Slot number is nothigher that the previous entry's.

The number of bits in a word is equal to the number of bits required toexpress the number of Time Slots plus the number of bits required toexpress the number of Channels. For example, a 64-channel interfaceconnected to a 1,024 channel TDM requires 10+6=16 bits of storage perchannel. The total map storage requirement is thus 64 words×16-bitwords×2 directions=2,048 bits. This requires much less memory than theprevious scheme, but this scheme requires 2 counters, 2 comparators, andis not as easily edited by the System Software because if an entry needsto be inserted or deleted in the middle of the list, the entire listfrom that point to the end must be updated.

If instant map editing is required, it is possible to add a second tablewhich allows the table to be un-sorted but tells the TDM Interface whichorder it is to proceed through the table such that the Time Slot numbersare always in ascending order. This essentially turns the table into alinked list, such that any entry may be inserted or deleted by editingjust two locations. Again, one location per channel is required and thewidth is equal to the number of bits required to express the number ofchannels. So we are adding 64 words×6-bit words×2 directions=768 morebits. The total map size is still only 2,816, which is a factor of fiveless than the first table format.

In a particularly preferred embodiment, the TDM Interface is implementedas a semi-custom, standard cell CMOS ASIC (application specificintegrated circuit), described below. The TDM ASIC becomes the switchingcore of the intercom system. In order to connect a "talker" intercomwith a "listener" intercom, the system software programs the connectioninto one or more of the TDM ASICs in the system.

In this preferred embodiment, the intercom system consists of somenumber of intercom Keypanels and a "matrix box" to interconnect themall. These Keypanels are the user sites in actual operation, and are theactual sources and destinations of audio. The matrix box itself does nothave a matrix of switches, but consists of a modular family of circuitcards and a card cage. Linking the cards together across the backplaneis the TDM Bus, which carries all the audio channels in the system. TheTDM ASIC is installed on every card that is to interface to the TDM Bus.

These circuit cards are called Client cards, because multiple Clientsuse the services of the TDM Bus. There is a different Client card foreach type of Client. For example, in FIGS. 15-16 illustrate both aDigital Keypanel Card 30 and an Analog Keypanel Card 32. The system alsoincludes a Trunk Card 34 to trunk multiple matrix cages of cardstogether. For example, in a system having eight users per Client Card,utilizing card cages housing 16 cards, 128 users could be served by asingle cage. Another cage can be added by utilizing a Trunk Card 34 ineach cage; a serial formatter sends the entire data stream from the TDMBus of the first cage to the trunk card of the second cage, which thenbroadcasts the data onto the TDM Bus of the second cage, with only anextremely minor delay (e.g., 2 sample periods, which, with a 44.1 kHzsample rate, would be inconsequential to an intercom system).

The system also can include one or more DSP Cards 36, which is the onlyClient card that has no connections to the outside world. All the othershave some connection to the outside word (i.e., microphones, speakers,etc.) in the form of a cable connector. Such cards can performprocessing functions on any of the signals broadcast on the TDM, such asequalization, dynamic range compression, echo cancellation, etc.

FIGS. 15 and 16 depict Client Cards (30 and 32) with two TDM ASIC each,each TDM ASIC serving 8 Keypanels; thus, each card is depicted asserving 16 Keypanels. Current A/D converters are of a size that it ispreferable to have only 8 Keypanels served per card; this is alimitation of currently available A/D converters, however, and notnecessarily a system requirement. Serial formatters generally requireless board space, however, making a 16 Keypanel digital I/O card morefeasible.

FIGS. 15 and 16 also depict BTL circuitry being employed to deliver datafrom the TDM Bus to the local card data bus 37 for use by the TDMASIC's. BTL (backplane-transistor-logic) drivers are well-known, andneed not be described here in detail. See, e.g., S. Duncan, et. al,"Designing 2.1 V Futurebus+Termination System RequiresSystem-Engineering Approach," Electronic Design News, (May 26, 1994).

FIG. 16 also depicts control signals sent to the system Control Bus bythe System Software via a UART (Universal Asynchronous ReceiverTransmitter) and a microprocessor (μP). System commands are sent out tothe individual microprocessors 38 on Client Cards upon power-up of thesystem, and when other system instructions are desired to be sent. Eachof the individual microprocessors 38 on the Client Cards in turn controlthe TDM ASIC(s) on their respective card to properly route signals toand from the TDM Bus.

Thus, the immediate environment surrounding a TDM ASIC is a Client Cardto be installed in a matrix card cage. FIG. 17 illustrates a possibleconfiguration of the Client Card. The ASIC preferably has two ports forthe audio signal; one is the TDM Bus Port (39a and 39b for the input andoutput halves, respectively) and the other is called the Client Port.Actually, there may be two types of Client Ports on the chip--the ASICshown in FIG. 17 includes a group of eight serial ports 42 for Keypanelsand one multi-channel parallel port 44 for a DSP. While the Client Cardsshown in this drawing indicate that a single card can serve bothKeypanels and a resident DSP, in many systems the desire for modularityof function will dictate that cards containing DSP's not serviceKeypanels (so as to facilitate maximum use of such a card for DSPfunctions), and the cards serving Keypanels not service DSP's (so as tofacilitate service to a maximum number of Keypanels). The ASIC also hasa programming port or control port 40 through which the residentmicroprocessor 38 controls it, in response to the system software anduser requests.

As indicated above, audio signals on the Client side of the chip arecalled Channels, audio signals on the TDM Bus are called Time Slots.From the point of view of the TDM ASIC, audio that passes through thechip from the Client Port to the TDM Port is called "outbound" audio,and audio that passes through the chip from the TDM Port to the ClientPort is called "inbound". The rationale for this terminology is that theTDM ASIC sees itself as being on the edge of the card nearest the TDMBus. From its point of view, audio coming from the bus is coming ontothe card (or inbound), and audio bound for the bus is leaving the card(or outbound).

The TDM ASIC's job is to connect a number of Client Channels to a numberof TDM Bus Time Slots in both the inbound and outbound directions. Asecondary function of the TDM ASIC is to mix multiple inbound Time Slotsinto a single composite signal which may be either an inbound Channel oranother outbound Time Slot. In order to do its primary job the chipneeds to know which Time Slots are to be connected with which Channels.For this information the TDM ASIC references internal tables called"maps"--typically three such maps for the ASIC shown in the drawings. Itis these maps that enable the chip to do its job. The maps aredynamically programmed by the system software (including themicroprocessor 38) in response to user activity.

In the preferred TDM ASIC, the three chip-internal maps to be programmedby the system software have the following functions: the first mapassigns a unique Time Slot destination for each outbound Channel, thesecond one assigns a unique Inbound Audio Buffer Location as destinationfor each requested inbound Time Slot, and the last one assigns a(possibly non-unique) Inbound Audio Buffer location as a source for eachinbound Channel. FIG. 18 is a simplified diagram of the outbound audiodata path, showing the table to be programmed.

The second map, for the inbound audio buffer location, must take intoaccount the fact that there is a digital audio mixer inside the TDMASIC. This mixer behaves very much like a built-in Client. If theparallel audio port is not being used, the mixer's operation istransparent. If the parallel audio port is being used, however, say by aDSP Card, then the external Client circuitry (the DSP) and the internalmixer must time-share the services of the audio routing portion of thechip. FIG. 19 is a simplified diagram of the inbound audio path, showingthe tables to be programmed.

As indicated above, a wide variety of hardware and software combinationscould be utilized to carry out the invention. FIG. 20 illustrates,conceptually, the function of a preferred TDM ASIC having the followingcapabilities:

Inbound Signals

Of the 1,024 signals carried by the TDM Bus, the TDM chip desirably iscapable of pulling in up to 256 signals off the TDM Bus and storing themin its Inbound Audio Buffer 50. It is not necessary that the Time Slotsrequested be in contiguous blocks, nor is it necessary that they bediscontiguous. The group of 256 requested Time Slots may be a mixed setof isolated Time Slot numbers and/or continuous blocks of Time Slotsnumbers, and these blocks may be of varying size. It is not necessarythat all of the 256 requested Time Slots be pulled in, in fact it is notnecessary that any Time slots be pulled in at all. A pulled-in Time Slotmay be written to no more than a single location in the Inbound AudioBuffer 50, but it is possible to send it from there to multipledestinations elsewhere in the chip and in the system.

All 256 signals stored in the Inbound Audio Buffer may be sent to themixer 52, and/or all 256 may be read directly through the chip's inboundparallel audio port 54. There is no Inbound Audio Buffer storage spacetradeoff that needs to be made between the mixer and the parallel port;all the signals in the buffer may be read by either the mixer or theparallel port, or both, or neither. There is, however, a time tradeoffthat needs to be made between the mixer and parallel port's accesses tothis buffer, however. This time tradeoff applies equally to the OutboundAudio Buffer, as explained below.

Mixer

The preferred mixer is capable of computing as many as 64 output mixes.The mixer may thus be considered as 64 individual "virtual" mixers,numbered 0 through 63. Although the mixer's outputs are all createdusing inbound signals, the mixes can all be turned back around to becomeoutbound signals, never seen by the Client card on which the chip isinstalled (unless they are later brought back in from the bus as newinbound signals). Preferably the first eight mixer outputs are unique inthat they are the only ones that can additionally continue on as inboundsignals readable by the Client. To accomplish this, each is hard-wiredto a unique serial port destination 56. Mix 0 is hard-wired to SerialPort 0, etc.

Each input signal applied to a mix has a scaling factor, or "volume"assigned to it. This weighting factor may be, e.g., a 12-bit numberyielding 4,096 possible volume levels. The levels are all attenuative,that is, the scaling factor is a number between 0 and 1. A 13th bitallows exact unity gain, and a 14th provides phase inversion (negativevolume, e.g., for subtracting an individual signal from a given mix ofsignals). The volume attenuation is illustrated conceptually in FIG. 20as a set of volume faders; while such a configuration theoreticallycould be utilized, preferably the volume attenuation and mixing isaccomplished serially utilizing a single multiply/accumulate circuit asdescribed above in connection with FIG. 12.

Because the ASIC can pull in a maximum of 256 signals off the TDM Bus,the 64 individual mixes must share a global input signal "pool" limitedto 256 signals. This global input signal pool may be divided up in anyproportion amongst the 64 individual mixes. The sub-group of inputsignals selected from the pool for application to an individual mix iscalled that mix's "listen group". It is not necessary that all themixing capability be used, nor is it necessary that all 256 input signalpossibilities be used. It is not necessary that the listen group sizefor all individual mixes be the same. That is, different mixes may havediffering numbers of input signals. Listen groups for different mixesmay overlap to any degree, meaning that two or more mixes may includesome of the same signals, or all of the same signals, or none of thesame signals. Input signals belonging to multiple mix listen groups maybe assigned a different volume level in each listen group it belongs to.A signal could even be mixed multiple times in the same mix, albeit toquestionable advantage (perhaps as a way to scale a signal by a factorgreater than 1).

The mixer operates for only 256 clock signals per sample period, and ineach clock period it can accumulate one input signal into one mix.Therefore, if all the listen group sizes are added up, the total shouldnot exceed 256, regardless of the degree of overlap between listengroups. In other words, sending a common signal to three mixes does notallow the signal to be mixed "for free" in the second and third mixes.The signal still counts three against the total allowed in thisembodiment of the invention.

The output mixes are computed in order from 0 to 63. That is, in eachsample period, all the signals to be applied to mix 0 are scaled (by thefigurative volume faders in FIG. 20) and accumulated (by the figurativesumming elements in FIG. 20) first, then the signals for mix 1, then mix2, etc. Although it is not necessary that all of the figurative mixersbe used, no mixer may be entirely skipped if a higher numbered mixer isto be used. That is, if mixers 0 and 2 are being used and mixer 1 is notbeing used, mixer 1 must nevertheless be told to mix at least one"dummy" signal, which counts 1 against the total of 256 signals that maybe accumulated per sample period. What this does is place a differingmaximum mixing capacity on all the different mixers, as follows:figurative mixer 0 could mix 256 signals if none of the others werebeing used, but mixer 1 could only mix 255 signals even if none of theothers were being used, due to the fact that mixer 0 would have to mixat least one "dummy" signal. Mixer 2 could mix only as many 254 signalsmaximum, because both mixers 0 and 1 would each have to mix one "dummy"signal each, etc. So each mixer could mix a maximum number of equal to256, less its mixer number. It is not necessary to send dummy inputsignals to those mixers whose mixer number is higher than the highestnumbered mixer actually being used. As indicated above, preferably thereare not 64 separate mixers in the ASIC mixer, merely a single mixersequentially performing the requisite mixes.

Outbound Signals

Of the 1,024 signals carded by the TDM Bus, each TDM chip can drive amaximum of 64 signals out across the TDM Bus. It is not necessary thatthe Time Slots driven be in contiguous blocks, nor is it necessary thatthey be discontiguous. The group of 64 driven Time Slots may be a mixedgrouping of isolated Time Slot numbers and/or continuous blocks of TimeSlots numbers, and these blocks may be of varying size. It is notnecessary that all of the 64 possible Time Slots be driven, in fact itis not necessary that any Time Slots be driven at all. The onlyrestriction placed on Time Slot usage is that no two TDM chips attemptto drive the same numbered Time Slot--this is the responsibility of thesystem software to orchestrate, not the TDM.

The 64 signals the TDM chip is capable of driving into TDM Time Slotsmay be sourced from 75 possible locations inside the chip. These includethe chip's eight output serial ports 57, the test audio in 60, testaudio out 61 and time-of-day clock 62, and the other 64 are sourced fromthe chip's internal Outbound Audio Buffer 51. Any mixed group of 64 ofthe 75 internal sources may be sent to any Time Slot, in any order,contiguously or non-contiguously.

Mixer/Parallel Port Trade-offs

The 64 locations in the Outbound Audio Buffer are divided up between theinternal mixer 52 and the outbound parallel audio port 55. For example,if 64 mixes were being produced, then the parallel audio port 55 couldnot be used in the outbound direction. If only twelve mixes were beingproduced, then the parallel audio port could be used to send 52 signalsout across the TDM Bus. The split point can be set anywhere from 0 to63, but preferably it is not changed dynamically in real time. Afigurative mixer always puts its output in the Outbound Audio Bufferlocation equal to its mix number; the mixer thus gets the lower sectionof the buffer starting with location zero continuing up to the number ofthe highest numbered mixer that is in use, including any "dummy" mixes.The parallel port's section of the buffer 51 may be set to start at anylocation higher than the number of the highest numbered mixer that is inuse. The parallel port's Channels will be written into the buffer inascending order from that location up.

In addition to the Outbound Audio Buffer space tradeoff between themixer and the parallel audio port, as described above, there is also atime tradeoff between these two Clients concerning access to both theInbound and Outbound Audio Buffers. In a system having, e.g., 1,024 TimeSlots carded by the TDM Bus with no Dead Zone, the TDM Frame is dividedinto 1,024 clock periods. The mixer's clock runs at half this rate, sothere are 512 mixer clocks per sample period, of which it is active fora maximum of 256. So if the mixer is at its capacity summing 256signals, it would still be active for only haft the sample period. Theparallel audio port could have access to the buffer for the rest of thesample period. The parallel port gets the buffers first, at thebeginning of the sample period, and can use them until the mixer startsup. The mixers' start time is programmed into an internal register. Ifthe mixer has less signals to mix than 256, its start time can bedelayed, giving more time to the parallel port. If the TDM Bus were tocarry less Time Slots, then there would be fewer clock periods to bedivided among the two Clients. In this case the mixer would either haveto mix fewer signals or start earlier. Extra Dead Zone cycles do notaffect the mixer, which measure time in clock cycles, but they do affectthe parallel port, which measures time in milliseconds. Dead Zone cyclestake milliseconds away from the parallel port's window into the AudioBuffers. In most situations, however, the system will still have plentyof time--for most uses of the system of the invention 1,024 clockperiods is a lot of time, and 256 mixer inputs is a lot of signals.Usually far fewer signals will be mixed and, using the maximum number ofclock periods, there will be plenty of time available for the DSP to getaccess to its signals through the chip's parallel port. In any case, apreferred way to write a DSP sequence is: TDM Write (last period'soutputs), TDM Read (this period's inputs), Process, & Save Outputs. Thisway the parallel port accesses are condensed into the beginning of thesample period by design.

The following examples illustrate possible techniques for programmingthe TDM ASIC's internal maps in response to a series of hypotheticaluser connection requests. As mentioned, every card includes amicroprocessor which is responsible for maintaining the mappingfunctions inside its associated TDM ASIC. These processors have accessto the backplane control bus, which they can use any time they need tosend a message to a processor on another card. The processor changes theTDM ASIC's mapping functions in response to user keypresses at one ormore of the card's eight user stations (or keypanels). In the preferredembodiment, an RS-485 serial differential line is provided to each ofthe user stations, in parallel. The processor polls its eight userstations for information about user key press activity, and the userstations return information only when polled.

When a user presses a "Talk" key, the processor on the Talker's cardbecomes aware of the key press during the very next poll of its userstations. If the Talker and Listener user stations are both connected tothe same card, the processor on that card can make all the connectionsfrom Talk Channel to Time Slot to Listen Channel without assistance. Itdoes this by making the appropriate modifications to the mappingfunctions inside the TDM ASIC. If, however, the Talker and Listener userstations are connected to different cards, then the Talker's processorfirst makes the connection from Talk Channel to Time Slot by programmingits own TDM ASIC. Then it sends a message via the backplane Control Busto the Listener's processor, asking it to make the subsequent connectionfrom Time Slot to Listen Channel via the mixer. The listener's processormakes this connection by programming its TDM ASIC. As soon as the finalconnection is made, digital audio flows from source to destinationthrough the system without further need for microprocessor intervention.The processors are then free to await further user key presses.

To start with we will consider only inbound connection requests, thatis, requests from the user that we retrieve signals that are currentlyout on the TDM Bus and deliver these to a Client.

Assume that the user will fill out a "form" to request inbound audiosignals and to specify where the signals should be sent (requests thatare received and processed by the microprocessor on the board associatedwith the TDM ASIC). Each time the user asks for a new signal, the mapswill be programmed accordingly. In this way one does not have to connectmore than one signal at a time.

The signal destinations are listed down the left side of the two columnsin the example tables. For each inbound signal listed, the source TimeSlot and the Volume Level (at which the signal is to be mixed) arespecified.

Notice that there are two types of destinations for the mixer's outputs:Serial Ports and Bus Mixes. In the preferred embodiment being describedthe first eight mixes are special and go both directions in "Y-cord"fashion, but the last 56 can only be looped back to become Bus Mixes(other configurations could also easily be employed). Mixes sent toSerial Port destinations eventually make their way outside the matrixcard cage to intercom Keypanels. Bus Mixes loop fight back out onto theTDM Bus via the Outbound Audio Buffer and are dealt with by programmingthe Outbound Map. Bus Mixes will be dealt with below.

EXAMPLE 1

The user requests that Time Slot 79 be mixed at full volume anddelivered to Serial Port 0. "Mix" is somewhat of a misnomer in thissituation, since there is only one signal, but in general there will bemultiple signals be to mixed together.

    ______________________________________                                        Destination Serial                                                                        Destination                                                       Port        Bus Mix   Source Time Slots & Volumes                             ______________________________________                                        0           0         79 @ full Volume                                        1           1                                                                 2           2                                                                 3           3                                                                 4           4                                                                 .           .                                                                 .           .                                                                 .           .                                                                 63          63                                                                ______________________________________                                    

The first table needed to program in response to this request is the onethat assigns a destination Inbound Audio Buffer location to eachrequested inbound Time Slot. It is called the Inbound Time Slot Table.Here's what the table looks like:

    ______________________________________                                                           Destination                                                        Source Time                                                                              Buffer          Inbound Link                               Address Slot       Location   Link 1 Reg:                                     ______________________________________                                        2                                                                             3                                                                             4                                                                             .                                                                             .                                                                             .                                                                             255                                                                           ______________________________________                                    

The table has 256 places for entries, each of which is organized intoseveral fields. In addition, off to the right, there is an associatedregister called the First Link Register.

Each requested Time Slot requires one entry in the Inbound Time SlotTable, and there are 256 places for entries, so the TDM ASIC has acapacity of 256 inbound signal paths between the TDM Bus and itsClients. Each entry specifies three things: the requested Source TimeSlot, the destination Inbound Audio Buffer location, and a link to thenext entry.

All three tables inside the TDM ASIC preferably are organized as linkedlists, which means that each entry contains a pointer, or "link" to thenext entry. Each entry thus has a predecessor that points to it and asuccessor that it points to. The first entry has no predecessor, so thepointer to the first entry must be written into the First Link Registerassociated with the table.

This linked list scheme allows the table to be read by the chip in adifferent order than that in which the entries were programmed.Specifically, the TDM ASIC needs to read the entries from the InboundTime Slot Table in order of ascending Time Slot number. This is becausewhen it reads a new entry, it compares the requested Time Slot numberwith the number being output from an internal up-counter. The counter isreset to zero at the beginning of each sample period and increments eachclock period thereafter. It therefore indicates which Time Slot iscurrently present out on the TDM Bus. The chip sits and spins, waitingfor the count to compare. When the requested Time Slot number finallycompares with the current Time Slot as indicated by the counter, we havea Time Slot "hit", so the chip pulls in the audio sample from the busand then gets the next entry from the table. Since the up-counter isforever ascending, so must the requested Time Slot numbers as read fromthe table.

In general the user will not conveniently request signals in thistime-slot ascending order. One could require that the system softwaresort the table after each entry, but this may introduce a considerablelag in connection response time. More importantly, the chip would haveto be taken off-line while the map was sorted, interrupting audio on thesignals that pass through it. Thus, the hardware linked-list approachhas certain advantages. The program thus tells the chip in what order itmust step through its table such that the Time Slots are read inascending order, regardless of the order in which they actually havebeen entered into the table.

In the current example, the new entry is the first entry. In thisexample the first entry is arbitrarily written into the first locationof the table, but one could have written it anywhere in the table. Allthat is needed is to write a pointer to the first entry in the FirstLink Register. Since we have chosen to write the first entry in locationzero of the table, we must write a "0" into the First Link Register.This instructs the chip to start its path through the table by firstreading location zero.

    ______________________________________                                                           Destination                                                        Source Time                                                                              Buffer          Inbound Link                               Address Slot       Location   Link 1 Reg:                                     ______________________________________                                        0       79         0          0    0                                          2                                                                             3                                                                             4                                                                             .                                                                             .                                                                             .                                                                             255                                                                           ______________________________________                                    

Since the current entry is the only entry in the table, then bydefinition it is also the last entry. The last entry of a linked listmust somehow terminate the list. In the case of the Inbound Time SlotTable, the last entry terminates the list by pointing to any entry thatrequests a Time Slot number less than or equal to its own. This causesthe chip's comparator to spin for the remainder of the sample period,since the up-counter's value is always higher than the requested TimeSlot and there can be no further Time Slot "hits". The simplest way tomake sure the last entry points to a suitable entry is to have the lastentry point to itself. So a "0" has been written into the link field oflocation 0, such that the entry points to itself.

Finally, a zero has been written into the Destination Buffer Locationfield, indicating to the chip that it is to store the audio requested bythis entry into the first location of the Inbound Audio Buffer. This islogical, but not required, Any entry can specify that its audio be sentto any location at all in the Inbound Audio Buffer. All one has to dofor each is remember where it was sent so one can come back and pick itup again later.

Now that the first entry has been programmed into the Inbound Time SlotTable, here is what the Inbound Audio Buffer will look like:

    ______________________________________                                        Address         Contents                                                      ______________________________________                                        0               Audio from Time Slot 79                                       2                                                                             3                                                                             4                                                                             .                                                                             .                                                                             .                                                                             255                                                                           ______________________________________                                    

The Inbound Audio Buffer now contains an audio sample from Time Slot 79,and in every ensuing sample period from now on, the successive audiosamples appearing out on the bus during Time Slot 79 will be retrievedand stored in Inbound Audio Buffer location 0.

The next thing to be done is to program the Mixer Table. This tabletells the mixer where in the Inbound Audio Buffer to pick up its nextaudio signal, and at what volume this signal is to be mixed, not tomention which mix it is to be a part of. Here is that table, programmedaccording to our example:

    ______________________________________                                               Source                                                                        Buffer             Accum.       Mix Link                               Address                                                                              Location  Volume   Term Bit                                                                              Link 1 Reg:                                 ______________________________________                                        0      0         Full     1       255  0                                      2                                                                             3                                                                             4                                                                             .                                                                             .                                                                             .                                                                             255    0         0        0       255                                         ______________________________________                                    

Again, the table somewhat arbitrarily has been shown as starting withentry number 0, so a "0" must be written into the First Link Registerassociated with this table. Since the Inbound Time Slot Table specifiedthat Time Slot 79 be sent to Inbound Audio Buffer location 0, we musthere specify location 0 as the source for this audio signal. Since thisis the only signal to be mixed, it is also the last. The "Accum. Term"bit is set to inform the mixer that this is the last signal to be mixed.

Since this is the only entry in the table, by definition it is also thelast entry. It must therefore terminate the linked list. The MixerVolume Table is terminated in a different manner than the Inbound TimeSlot Table. Here we terminate the list by looping on a zero-volumeentry. So the last usable entry will point to a dummy location thatlinks back to itself and has zero volume. A further requirement of thislast dummy entry is that the Accum Term bit be cleared. The effect isthat after the last usable entry, the mixer spins on "nothing" until thesample period expires. Here we have arbitrarily chosen the last entry asour dummy end-of-table, but again any location could be used for theend-of-table.

The final field to be explained in the Mixer Volume Table is the AccumTerm bit. This bit tells the mixer that this entry is the last signal tobe added into the current mix. Upon reading a "1" in this field, themixer will transfer its contents to the appropriate destination, clearits accumulator, and begin mixing signals bound for the nextdestination.

The mixer always works in the same order: first it creates the mix boundfor Serial Port 0, then Serial Port 1, (etc. up to Serial Port 7) andfinally the outbound Bus Mixes 8 through 63.

In the above example, there is only one entry and it is bound for SerialPort 0 so the Accum Term bit can simply be set nothing more is required.This will cause the mixer to add nothing but Time Slot 79 at full volumeand then transfer the sum (which equals just Time Slot,79) to SerialPort 0. Then the mixer is sent off to spin till the end of the sampleperiod. Thus, Serial Port 0 will be listening to the signal carded byTime Slot 79 until the maps are changed again.

EXAMPLE 2

In this example, the first signal is left connected and a second signalrequested by the user is connected:

    ______________________________________                                        Destination Serial                                                                       Destination                                                        Port       Bus Mix   Source Time Slots & Volumes                              ______________________________________                                        0          0         79 @ full Volume, 142 @ -3 dB                            1          1                                                                  2          2                                                                  3          3                                                                  4          4                                                                  .          .                                                                  .          .                                                                  .          .                                                                  63         63                                                                 ______________________________________                                    

Here the user is requesting a mix of Time Slot 142 to Serial Port 0 inaddition to Time Slot 79, which is already going there at full volume.

First an Inbound Map must be created to retrieve the sample off the TDMBus:

    ______________________________________                                                           Destination                                                        Source Time                                                                              Buffer          Inbound Link                               Address Slot       Location   Link 1 Reg:                                     ______________________________________                                        0       79         0          1    0                                          1       142        1          1                                               3                                                                             4                                                                             .                                                                             .                                                                             .                                                                             255                                                                           ______________________________________                                    

The new entry is the second entry in the table, and it is written in thesecond location (again this is not mandatory; it could go anywhere).Since the new entry's requested time slot is higher than the earlierentry, the new entry does not take over as the linked list startingpoint. Therefore, the First Link Register does not need to be changed.

However, the new entry--being the second link in a list of twolinks--has taken over as the last link. Because of this it mustterminate the list. As was discussed in the previous example, an entrycan terminate the list most easily by simply pointing to itself.Therefore the new entry at location 1 has a "1" written into its Linkfield so that it points back to itself.

The earlier entry, written into location 0, used to be the last entryand now is not. Therefore its Link field must be updated. Whereas itused to point back to itself, it must now point to its successor, whichis location 1.

This will be the general pattern in updating a linked list: the newentry is written in a blank entry location and is written such that itpoints to its successor (which in this case is the entry that of allthose present, is the one with the next higher Time Slot number), or toitself if it is the entry which of all those present is the onerequesting the highest numbered time slot. Then, its predecessor must bemodified to point to the new entry. So two entries must be modified in alinked list table to add a new connection. And since them are two tablesto be modified in the inbound direction, four writes total must be doneto add a new connection to the system.

It is important to contrast this with the case where the table must besorted after each entry. As long as the new entry has the highestnumbered Time Slot request relative to all the existing entries, only asingle write per table is required. But if the new Time Slot must beinserted into a long list somewhere, the entire table from the new entryonward must be rewritten. In the worst case this could amount to are-write of two entire tables each of 256 entries.

In the present example, we have made the arrangements to bring the newTime Slot (#142) into the chip from off the bus, and it has beenassigned to the next available location in the Inbound Audio Buffer(location 1 ), although it could have been sent anywhere. Here is whatthe Inbound Audio Buffer will look like after this has been done:

    ______________________________________                                        Address         Contents                                                      ______________________________________                                        0               Audio from Time Slot 79                                       1               Audio from Time Slot 142                                      3                                                                             4                                                                             .                                                                             .                                                                             .                                                                             255                                                                           ______________________________________                                    

Now the Mixer can be appropriately instructed, with two modifications tothe Mixer Volume Table, as shown below:

    ______________________________________                                               Source                                                                        Buffer             Accum.       Mix Link                               Address                                                                              Location  Volume   Term Bit                                                                              Link 1 Reg:                                 ______________________________________                                        0      0         Full     1       1    0                                      1      1         -3 dB    1       255                                         3                                                                             4                                                                             .                                                                             .                                                                             .                                                                             255    0         0        0       255                                         ______________________________________                                    

Now entries are being applied to the mix bound for Serial Port 0 Left.The mixer doesn't care what order it mixes things in (i.e., within anindividual mix), so the previous entry can be left as the first entry.All that is needed is to make the new entry terminate the list bypointing to the zero-volume loop and change the earlier entry so that itno longer does this, pointing instead to the entry just added. The newentry must now terminate the sub-mix to Serial Port 0, so the Accum Termbit is set and the earlier entry changed by clearing its Accum Term bitso that it no longer does this. Of course the new entry also tells themixer where to pick up its next piece of audio and what volume level tomix it at. Now serial port 0 is receiving an audio signal which is equalto the sum of the audio signals carded by TDM Time Slots 79 and 142,just like the user requested.

EXAMPLE 3

Again in this example the first two signals are left connected and athird signal requested by the user is added:

    ______________________________________                                        Destination Serial                                                                       Destination                                                        Port       Bus Mix   Source Time Slots & Volumes                              ______________________________________                                        0          0         79 @ full volume, 142 @ -3 dB                            1          1                                                                  2          2         5 @ full volume                                          3          3                                                                  4          4                                                                  .          .                                                                  .          .                                                                  .          .                                                                  63         63                                                                 ______________________________________                                    

There are two nuances to this request. First, a Time Slot number isbeing requested which is less than any of the previously requested TimeSlot numbers, and second we are sending something to mix 2 and skippingmix 1. As usual we must first make arrangements to bring the new samplein off the TDM Bus, with the following Inbound Map:

    ______________________________________                                                           Destination                                                        Source Time                                                                              Buffer          Inbound Link                               Address Slot       Location   Link 1 Reg:                                     ______________________________________                                        0       79         0          1    2                                          1       142        1          1                                               2       5          2          0                                               4                                                                             .                                                                             .                                                                             .                                                                             255                                                                           ______________________________________                                    

The new entry requests that Time Slot 5 be pulled off the TDM bus, andthe request continues with the pattern of sending the new entry's audioto the next available location in the Inbound Audio Buffer. Since thenew entry's requested time slot is lower than the requested Time Slotnumbers of either of the earlier entries, the new entry takes over asthe linked list's starting point. Therefore, the First Link Registerneeds to be changed such that it points to the new entry.

The new entry must point to the earlier entry which of all those presentis the one requesting the next higher Time Slot number. In this casethat would be entry number 0, so a "0" is written into the new entry'sLink field.

Although it was described in backwards order for this example, its veryimportant to do the two modifications to the linked list in this order:always write the new entry into a blank location pointing to itssuccessor, THEN modify the link of its predecessor. The consequences ofdoing these two operations in reverse order could cause problems in thatthe linked list is told to jump to an as yet unprogrammed location. Inthe mildest case, audio would simply stop on all channels beyond theinsert point in the list; very possibly, however, the linked list couldexecute in the wrong order such that the audio source-to-destinationconnectivity of the system became scrambled.

Once again the arrangements have been made to bring the new Time Slot(#5) into the chip from off the bus, and again it has been arbitrarilyassigned to the next available location in the Inbound Audio Buffer(location 2), resulting in and Inbound Audio Buffer as follows:

    ______________________________________                                        Address         Contents                                                      ______________________________________                                        0               Audio from Time Slot 79                                       1               Audio from Time Slot 142                                      2               Audio from Time Slot 5                                        4                                                                             .                                                                             .                                                                             .                                                                             255                                                                           ______________________________________                                    

And, thus, the modifications to the Mixer Volume Table result in thefollowing:

    ______________________________________                                               Source                                                                        Buffer             Accum.       Mix Link                               Address                                                                              Location  Volume   Term Bit                                                                              Link 1 Reg:                                 ______________________________________                                        0      0         Full     1       1    0                                      1      1         -3 dB    1       2                                           2      0         0        1       3                                           3      2         Full     1       255                                         .                                                                             .                                                                             .                                                                             255    0         0        0       255                                         ______________________________________                                    

Since the two earlier entries have been left alone in terms of theirpositions in the linked list (they are still first and second in thelink order), the new Accum Term bit is the second one the linked listcomes across. The first one is in entry number 1, and this willterminate the accumulation for mix 0, Serial Port 0. The next onehappens in our dummy entry (#2) and this terminates the dummyaccumulation for mix 1, Serial Port 1. Since it is a dummy accumulation,its volume has been set to 0. Then the third Accum Term bit is in entry#3, and this will terminate the accumulation for mix 2, Serial Port 2.

With respect to the Link field, the two new entries come after theearlier two in the link order, so there is no change in the list'sstarting entry and therefore the Link 1 Register can be left alone. Butthe old list terminator must change to point to the new dummy entry andthe new real entry must inherit the duty of terminating the list bypointing to the zero volume loop. Serial Port 0 is now receiving a mixof the audio carried by Time Slots 79 and 142, and Serial Port 2 isreceiving a "mix" consisting of just the audio carded by Time Slot 5.

If the user comes back later on and requests a signal be sent to Mix 1(which right now is just a dummy mix of one zero-volume sample), we canjust overwrite the dummy sample with the real one being requested. Sincethe list order does not need to be changed, it is not necessary toupdate the pointer of the new entry's predecessor and only one writewill be required instead of the usual two. In general it takes twowrites to add an entry, two writes to delete an entry, but only onewrite to substitute one entry for another.

EXAMPLE 4

The next example illustrates the programming in the outbound direction.The outbound direction has only one map, which looks like this:

    ______________________________________                                               Source                          Outbound                                      Buffer   Dest. Time             Link 1                                 Address                                                                              Location Slot      Serial Sel:                                                                           Link Reg:                                   ______________________________________                                        2                                                                             3                                                                             4                                                                             .                                                                             .                                                                             .                                                                             63                                                                            ______________________________________                                    

Each entry in the table describes one outbound connection. Since thereare 64 entries in the table, this represents the maximum number of TimeSlots which can be driven by the TDM ASIC. The signals driven out intothe TDM Time Slots can come from two source types inside the chip. Thefirst source is the 64-channel Outbound Audio Buffer. The other sourceis the eight client outbound serial ports. The "Serial Sel" bit in eachentry of the Outbound Time Slot Table is used to choose from whichsource type the TDM Time Slot will be driven. For instance, if theSerial Sel bit is 0 and Source Loc is 3 in a given entry, this meansthat Outbound Audio Buffer location 3 is to be used as the audio source.On the other hand if Serial Sel. Bit is 1 and Source Loc is 3, thenSerial 3 is to be used. There are four additional sources that canpossibly be selected by "SER SEL"--two of them are from the Time-of-Daycounter, one is Inbound Test Audio, and the other is Outbound TestAudio.

The Outbound Audio Buffer is itself filled by one of two sources: themixer and the Parallel Audio Port. Thus, the 64 possible outputs can bedriven by any combination of the 8 possible Client Outbound SerialPorts, the 64 possible mix outputs, or the 64 possible parallel portchannels.

The Outbound Audio Buffer must be shared by the parallel audio port andthe mixer. The Outbound Audio Buffer has an associated register calledthe Wr FIFO Pre-Ld Register that determines how the buffer will be splitup between these two Clients. The mixer always writes its mix outputsinto Outbound Audio Buffer locations having the same number as the mixoutput number. For example mix 3 will always be written into OutboundAudio Buffer location 3. The mixer only writes locations up to thehighest numbered mixer output that is in use, however. The parallel portplaces its first write data in the buffer location pointed to by the WrFIFO Ld Register, and thereafter places each successive write data intothe next higher location in the buffer.

Therefore if the Wr FIFO Pre-Ld Register is filled with a number greaterthan that of the highest numbered mixer output that is in use, the twoClients will utilize mutually exclusive areas of the buffer. The pointercontained in this register can be thought of as defining a boundarywithin the Outbound Audio Buffer shown below which the mixer stores itsoutputs and above which the parallel port stores its signals:

    ______________________________________                                        Address                                                                              Contents          Wr FIFO Pre-Ld Reg:                                  ______________________________________                                        0      Audio from Mix 0  4                                                    1      Audio from Mix 1                                                       2      Audio from Mix 2                                                       4      Audio from Client Ch. 0                                                5      Audio from Client Ch. 1                                                6      Audio from Client Ch. 2                                                .                                                                             .                                                                             .                                                                             63     Audio from Client Ch. 59                                               ______________________________________                                    

In the example above, the boundary is set between location 3 and 4 bywriting a 4 in the Wr FIFO Ld Register. This means that no more thanfour mix outputs may be used and that no more than sixty outboundparallel port channels may be used. Regardless of where the boundary isset, there is no requirement that all locations on either side beutilized, in fact there is no requirement than any of them at all beused.

There is also a time boundary that must be programmed into the ClientMaxCount Register. At the beginning of the sample period, the parallelport will start filling the buffer by writing its channels from theboundary upwards. Later on in the sample period, when Client MaxCountcompares with the internal Time Slot up-counter, the mixer will takeover and fill from zero up towards the boundary.

EXAMPLE 5

This example illustrates sharing of the Inbound Audio Buffer between themixer and the parallel audio port. The most important change here isthat the Mixer Volume Table splits into two tables: the Mixer VolumeTable for the mixer and the Client Channel Table for the parallel audioport. Actually, what happens is that the storage space that had beenused for a single linked list is now used to store two independentlinked lists. Within these lists, the Accum Term bit continues to serveits previous function for the Mixer Volume portion of the table, butwithin the Client Channel portion of the table, the Accum Term bitbecomes the Mix Select Bit. Each of the two linked lists now have theirown Link 1 Register, The Link 1 Register for the Mixer Volume Table isthe Mix Link 1 Register. The Link 1 Register for the Client ChannelTable is called the Client Read Link 1 Register.

For example, assume that the previously connected signals are to be leftconnected, and in addition Time Slot 33 is now to be connected toChannel 0 of the parallel port. First of all, our user "request form"will have to be modified to include space for requesting parallel portchannels:

    ______________________________________                                        Destination Serial                                                                       Destination                                                        Port       Bus Mix   Source Time Slots & Volumes                              ______________________________________                                        0          0         79 @ full volume, 142 @ -3 dB                            1          1         33 @ full volume, 79 @ -3 dB                             2          2         5 @ full volume                                          3          3                                                                  4          4                                                                  .          .         .                                                        .          .         .                                                        .          .         .                                                        63         63                                                                 ______________________________________                                        Parallel Port                                                                            0        1     2      . . .                                                                              255                                     Channel #:                                                                    Source Time                                                                              33                    . . .                                        Slot:                                                                         ______________________________________                                    

Notice that each Parallel Port Channel may have one and only one TimeSlot specified as the source for its audio, instead of a list of TimeSlots as in the case of the mixers. The following is the Inbound Map,making arrangements to pull in Time Slot 33, which is a new signal:

    ______________________________________                                                           Destination                                                        Source Time                                                                              Buffer          Inbound Link                               Address Slot       Location   Link 1 Reg:                                     ______________________________________                                        0       79         0          1    2                                          1       142        1          1                                               2       5          2          3                                               3       33         3          0                                               .                                                                             .                                                                             .                                                                             255                                                                           ______________________________________                                    

This results in the following Inbound Audio Buffer contents:

    ______________________________________                                        Address         Contents                                                      ______________________________________                                        0               Audio from Time Slot 79                                       1               Audio from Time Slot 142                                      2               Audio from Time Slot 5                                        3               Audio from Time Slot 33                                       .                                                                             .                                                                             .                                                                             255                                                                           ______________________________________                                    

The two linked lists for the mixer volume and the parallel port are thenprogrammed as follows:

    ______________________________________                                               Source                                                                        Buffer            Accum.                                               Address                                                                              Location Volume   Term Bit                                                                             Link                                          ______________________________________                                                                              Mix Link 1                                                                    Reg:                                    0      0        Full     1      1     0                                       1      1        -3 dB    1      2                                             2      0        0        1      4                                             3      2        Full     1      255                                           4      3        Full     1      3                                             .                                     Client Read                             .                                     Link 1 Reg:                             64     3        --              64    64                                      65                                                                            .                                                                             .                                                                             .                                                                             255    0        0        0      255                                           ______________________________________                                    

The linked list for the mixer is at the top and may recognized by itsVolume field entries. It also has an entry at the end of the table; thisis the zero-volume loop that terminates the mixer's linked list. Thelinked list for the Client's Parallel Port is in the middle of the tableand has its own Link 1 Register.

To explain this pair of lists we will explain the order in which the TDMASIC steps through the table, and what happens at each step.

At the beginning of a sample period, TDM Start causes the internalpipeline to reset. At this time, Client Link 1 is used as the first linkaddress. After this, nothing happens until the external Client readssomething out of the parallel port. (The first Client read of theparallel port during a sample period is DEFINED to be Client Channel 0,the second read in the sample period is defined as Client Channel 1,etc.).

The first Client read--Channel 0--uses entry #64 since that is whatentry the Client Link 1 Reg points to. Entry #64 says "use the audio inlocation #3 of the Inbound Audio Buffer," which contains the audio forTime Slot 33. So Time Slot 33 is mapped to Channel 0, as requested bythe user.

Entry #65 points back to itself, but the Client will never come back foranother channel so it doesn't matter where it points to. At somepre-programmed time given by contents of Client MaxCount in the middleof the sample period, the Mixer Active bit will come on. This causes thecontents of the Mix Link 1 Peg to be forced into the linked list pointerfield. Thus, even though the previously read entry points to entry #65,it is now preempted by the contents of Mix Link 1.

Next, Mix Link 1 points to entry 0 which specifies that Inbound AudioLocation 0 (containing audio from Time Slot 79) be mixed at full volume.The Accum Term bit is not set, implying that there are more audiosamples to be mixed into Mix 0.

Entry 0 points to entry 1, which specifies that Inbound Audio Location 1(containing audio from Time Slot 142) be mixed at -3 dB. The Accum Termbit is set, implying that there are no more audio samples to be mixedinto Mix 0. Therefore, Mix 0 is complete and is equal to the sum of theaudio contained in Time Slot 79 @full volume and Time Slot 142 @-3 dB.

Entry 1 points to entry 2, which specifies that Inbound Audio Location 0(containing audio from Time Slot 79) be mixed at -3 dB. The Accum Termbit is not set, implying that there are more audio samples to be mixedinto Mix 1.

Entry 2 points to entry 4, which specifies that Inbound Audio Location 3(containing audio from Time Slot 33) be mixed at full volume. The AccumTerm bit is set, implying that there are no more audio samples to bemixed into Mix 1. Therefore, Mix 1 is complete and is equal to the sumof the audio contained in Time Slot 79@-3 dB volume and Time Slot33@full volume.

Entry 4 points to entry 3, which specifies that Inbound Audio Location 2(containing audio from Time Slot 5) be mixed at full volume. The AccumTerm bit is set, implying that there are no more audio samples to bemixed into Mix 2. Therefore, Mix 2 is complete and is equal to the audiocontained in Time Slot 5@full volume.

Entry 3 points to entry 255, which specifies that Inbound Audio Location0 (containing audio from Time Slot 79) be mixed at 0 volume. The AccumTerm bit is not set, implying that there are more audio samples to bemixed into Mix 3.

Entry 255 points back to itself, so in each clock period from now untilthe end of the sample period, the mixer will add another copy of TimeSlot 79@0 volume. The mixer is effectively inactivated until the end ofthe sample period.

As will be apparent to those of ordinary skill in the art, FIGS. 21-23depict in block diagram fashion the operation of the TDM ASIC in apreferred embodiment of the invention, with FIG. 21 describing theoperation of the control port (under the instructions of the associatedmicroprocessor, FIG. 22 describing the routing of signals within theASIC, and FIG. 23 describing the operation of the mixer.

While a preferred embodiment of the present invention has beendescribed, it should be understood that various changes, adaptations andmodifications may be made therein without departing from the spirit ofthe invention and the scope of the appended claims.

What is claimed is:
 1. An intercom system comprising:a plurality ofintercom stations, at least some of which include an audio inputtransducer which generates an audio input communications signal, and atleast some of which include an audio output transducer which generatesan audio output from an audio output communications signal; ananalog-to-digital converter for creating digital audio input signalsrepresentative of the audio input communications signals received by theintercom stations; a digital switching system receiving audio inputcommunications signals from at least some of the stations and sendingaudio output communications signals to at least some of the stations,the digital switching system including a time division multiplexingsystem ("TDM") for broadcasting on a TDM bus multiple digitalcommunications signals including such digital audio input signals, theTDM system including one or more interfaces connecting the intercomstations with the TDM bus; and a signal mixer capable of receiving fromthe TDM bus selected ones of the digital audio input signals, andcreating and broadcasting on the TDM bus a custom mixed digital audiooutput communications signal which is a loudness weighted mix of suchselected digital audio input signals with at least one of such selectedsignals optionally being given a larger weight corresponding to a loudervolume than others of the selected signals; whereby the custom mixeddigital audio output signal may be routed to a selected one of theintercom stations as an audio output communications signal and convertedby the audio output transducer to audio output.
 2. The intercom systemof claim 1 wherein the signal mixer includes means for creating andbroadcasting on the TDM bus multiple custom mixed digital audio outputsignals for multiple ones of the intercom stations having an audiooutput means, at least one of the multiple custom mixed digital audiooutput signals being comprised of a weighted mix of digital audio inputsignals that is different than the weighted mix of the other custommixed digital audio output signal(s).
 3. The intercom system of claim 2wherein the weighted mix of at least one of the custom mixed digitalaudio output signals includes a selected digital audio input signalwhich is given a larger weight, corresponding to a louder volume, thansuch selected input signal is given in another one of the custom mixeddigital audio output signals.
 4. The intercom system of claim 1 whereinat least some of the intercom stations having audio input means includean analog,to-digital converter for converting the audio inputcommunications signal to a digital audio input communications signal. 5.The intercom system of claim 1 wherein at least some of the intercomstations having audio output means include a digital-to-analog converterfor converting a digital audio output communications signal to an analogaudio output communications signal.
 6. The intercom system of claim 1including control means for receiving from at least some of the intercomstations requests for custom mixing of communications signals and forcontrolling the signal mixer to produce a corresponding custom mixeddigital audio output signal.
 7. The intercom system of claim 6 whereinthe control means includes means for controlling the relative loudnessweighting of individual ones of the selected digital audio input signalsin response to requests from such intercom stations.
 8. The intercomsystem of claim 6 wherein at least some of the intercom stations whichhave audio output means also include listen request means for generatingrequests to receive selected ones of the digital audio input signals. 9.The intercom system of claim 8 wherein at least some of the listenrequest means include means for specifying an independent loudness levelfor each digital audio input signal requested.
 10. An intercom systemcomprising:a plurality of intercom stations having audio inputtransducers generating corresponding audio input communications signals;analog-to-digital converters for creating digital audio input signalsrepresentative of the audio input communications signals; and a digitalswitching system receiving audio input communications signals from atleast some of the stations and sending audio output communicationssignals to at least some of the stations, the digital switching systemincluding a time division multiplexing system ("TDM") for broadcastingon a TDM bus multiple digital communications signals including suchdigital audio input signals; digital signal mixer means for receiving aplurality "m" of digital input signals from the TDM bus and creating aplurality "n" of custom mixes of such signals, the number of digitalinput signals in each sub-mix being dynamically assignable to a numberbetween 0 and m-x where "x" is the number of input signalssimultaneously allocated to the other sub-mixes; whereby the custommixed digital audio output signals may be routed to a selected one ofthe intercom stations as an audio output communications signal.
 11. Theintegrated circuit of claim 10 wherein the signal mixer includes meansfor adjusting the volume of the input signals being mixed to createloudness weighted custom mixed digital audio output communicationssignals.
 12. An intercom system comprising:a plurality of intercomstations having audio input transducers generating corresponding audioinput communications signals; analog-to-digital converters for creatingdigital audio input signals representative of the audio inputcommunications signals; and a digital switching system receiving digitalaudio input communications signals from at least some of the stationsand sending audio output communications signals to at least some of thestations, the digital switching system including a time divisionmultiplexing system ("TDM") for sequentially broadcasting on a TDM busmultiple digital communications signals including such digital audioinput signals; an integrated circuit for receiving from the TDM bus aplurality of digital signals and for processing such signals, theintegrated circuit including:an inbound buffer for storing signalsamples received from the TDM bus; map means for routing each of aplurality of selected signal samples from the buffer; digital signalmixer means for receiving a plurality "m" of digital input signals fromthe buffer and creating a plurality "n" of custom mixes of such signals,the number of digital input signals in each sub-mix being dynamicallyassignable within the range of 0 to m-x where "x" is the number of inputsignals simultaneously allocated to the other sub-mixes; whereby thecustom mixed output signals may be routed to a selected one of theintercom stations.
 13. The intercom system of claim 12 furthercomprising volume control means associated with each of the mixer inputsfor selectively controlling the loudness of the signal routed to suchmixer input.
 14. A digital communications signal mixer comprising:aplurality of inputs for receiving a plurality of digital communicationsinput signals, and a plurality of outputs for sending a plurality ofdigital communications output signals; a digital switching systemreceiving input signals from at least some of the inputs and sendingoutput signals to at least some of the outputs, the digital switchingsystem including a time division multiplexing system ("TDM") forsequentially broadcasting on a TDM bus multiple digital communicationssignals including such input signals; the digital switching systemincluding a plurality of integrated circuits, each such circuitincluding means for independently receiving from the TDM bus a pluralityof digital signals and for processing such signals, each such integratedcircuit including an inbound buffer associated therewith for storingsignal samples received from the TDM bus; each integrated circuitincluding digital signal mixer means for receiving a plurality "m" ofdigital input signals from the inbound buffer and creating a plurality"n" of custom sub-mixes of such signals, the number of digital inputsignals in each sub-mix being dynamically assignable within the range of0 to m-x where "x" is the number of input signals simultaneouslyallocated to the other sub-mixes; the digital switching system furtherincluding map means associated with each such integrated circuit forrouting each of the selected digital input signals from the buffer tothe mixer to enable creation of the custom sub-mixes.